home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 April: Mac OS SDK / Dev.CD Apr 98 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / RIncludes / Controls.r < prev    next >
Encoding:
Text File  |  1998-02-12  |  17.9 KB  |  454 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        Controls.r
  3.  
  4.      Contains:    Control Manager interfaces
  5.  
  6.      Version:    Technology:    Mac OS 8.1
  7.                  Release:    Universal Interfaces 3.1
  8.  
  9.      Copyright:    © 1985-1998 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. */
  18.  
  19. #ifndef __CONTROLS_R__
  20. #define __CONTROLS_R__
  21.  
  22. #ifndef __CONDITIONALMACROS_R__
  23. #include "ConditionalMacros.r"
  24. #endif
  25.  
  26. #define kControlSupportsNewMessages     ' ok '                /*  CDEF should return as result of kControlMsgTestNewMsgSupport */
  27. #define kControlFocusNoPart             0                    /*  tells control to clear its focus */
  28. #define kControlFocusNextPart             (-1)                /*  tells control to focus on the next part */
  29. #define kControlFocusPrevPart             (-2)                /*  tells control to focus on the previous part */
  30.  
  31. #define kControlKeyFilterBlockKey         0
  32. #define kControlKeyFilterPassKey         1
  33.  
  34.                                                             /*  Meta-font numbering - see not above  */
  35. #define kControlFontBigSystemFont         (-1)                /*  force to big system font */
  36. #define kControlFontSmallSystemFont     (-2)                /*  force to small system font */
  37. #define kControlFontSmallBoldSystemFont  (-3)                /*  force to small bold system font */
  38.  
  39. #define kControlUseFontMask             0x0001
  40. #define kControlUseFaceMask             0x0002
  41. #define kControlUseSizeMask             0x0004
  42. #define kControlUseForeColorMask         0x0008
  43. #define kControlUseBackColorMask         0x0010
  44. #define kControlUseModeMask             0x0020
  45. #define kControlUseJustMask             0x0040
  46. #define kControlUseAllMask                 0x00FF
  47. #define kControlAddFontSizeMask         0x0100
  48.  
  49. #define kControlFontStyleTag             'font'
  50. #define kControlKeyFilterTag             'fltr'
  51.  
  52.                                                             /*  Control feature bits - returned by GetControlFeatures  */
  53. #define kControlSupportsGhosting         0x01
  54. #define kControlSupportsEmbedding         0x02
  55. #define kControlSupportsFocus             0x04
  56. #define kControlWantsIdle                 0x08
  57. #define kControlWantsActivate             0x10
  58. #define kControlHandlesTracking         0x20
  59. #define kControlSupportsDataAccess         0x40
  60. #define kControlHasSpecialBackground     0x80
  61. #define kControlGetsFocusOnClick         0x0100
  62. #define kControlSupportsCalcBestRect     0x0200
  63. #define kControlSupportsLiveFeedback     0x0400
  64.  
  65. #define kControlHasRadioBehavior         0x0800
  66. #define kControlMsgDrawGhost             13
  67. #define kControlMsgCalcBestRect         14                    /*  Calculate best fitting rectangle for control */
  68. #define kControlMsgHandleTracking         15
  69. #define kControlMsgFocus                 16                    /*  param indicates action. */
  70. #define kControlMsgKeyDown                 17
  71. #define kControlMsgIdle                 18
  72. #define kControlMsgGetFeatures             19
  73. #define kControlMsgSetData                 20
  74. #define kControlMsgGetData                 21
  75. #define kControlMsgActivate             22
  76. #define kControlMsgSetUpBackground         23
  77. #define kControlMsgCalcValueFromPos     26
  78. #define kControlMsgTestNewMsgSupport     27                    /*  See if this control supports new messaging */
  79.  
  80. #define kControlMsgSubValueChanged         25
  81. #define kControlMsgSubControlAdded         28
  82. #define kControlMsgSubControlRemoved     29
  83.  
  84.                                                             /*  Bevel Button Proc IDs  */
  85. #define kControlBevelButtonSmallBevelProc  32
  86. #define kControlBevelButtonNormalBevelProc  33
  87. #define kControlBevelButtonLargeBevelProc  34
  88.  
  89.                                                             /*  Bevel button graphic alignment values  */
  90. #define kControlBevelButtonAlignSysDirection  (-1)            /*  only left or right */
  91. #define kControlBevelButtonAlignCenter     0
  92. #define kControlBevelButtonAlignLeft     1
  93. #define kControlBevelButtonAlignRight     2
  94. #define kControlBevelButtonAlignTop     3
  95. #define kControlBevelButtonAlignBottom     4
  96. #define kControlBevelButtonAlignTopLeft  5
  97. #define kControlBevelButtonAlignBottomLeft  6
  98. #define kControlBevelButtonAlignTopRight  7
  99. #define kControlBevelButtonAlignBottomRight  8
  100.  
  101.                                                             /*  Bevel button text alignment values  */
  102. #define kControlBevelButtonAlignTextSysDirection  0
  103. #define kControlBevelButtonAlignTextCenter  1
  104. #define kControlBevelButtonAlignTextFlushRight  (-1)
  105. #define kControlBevelButtonAlignTextFlushLeft  (-2)
  106.  
  107.                                                             /*  Bevel button text placement values  */
  108. #define kControlBevelButtonPlaceSysDirection  (-1)            /*  if graphic on right, then on left */
  109. #define kControlBevelButtonPlaceNormally  0
  110. #define kControlBevelButtonPlaceToRightOfGraphic  1
  111. #define kControlBevelButtonPlaceToLeftOfGraphic  2
  112. #define kControlBevelButtonPlaceBelowGraphic  3
  113. #define kControlBevelButtonPlaceAboveGraphic  4
  114.  
  115. #define kControlBevelButtonSmallBevelVariant  0
  116. #define kControlBevelButtonNormalBevelVariant  0x01
  117. #define kControlBevelButtonLargeBevelVariant  0x02
  118. #define kControlBevelButtonMenuOnRight     0x04
  119.  
  120. #define kControlBehaviorPushbutton         0
  121. #define kControlBehaviorToggles         0x0100
  122. #define kControlBehaviorSticky             0x0200
  123. #define kControlBehaviorMultiValueMenu     0x4000                /*  only makes sense when a menu is attached. */
  124. #define kControlBehaviorOffsetContents     0x8000
  125.  
  126. #define kControlBehaviorCommandMenu     0x2000                /*  menu holds commands, not choices. Overrides multi-value bit. */
  127. #define kControlContentTextOnly         0
  128. #define kControlContentIconSuiteRes     1
  129. #define kControlContentCIconRes         2
  130. #define kControlContentPictRes             3
  131. #define kControlContentIconSuiteHandle     129
  132. #define kControlContentCIconHandle         130
  133. #define kControlContentPictHandle         131
  134. #define kControlContentIconRef             132
  135.  
  136. #define kControlBevelButtonContentTag     'cont'                /*  ButtonContentInfo */
  137. #define kControlBevelButtonTransformTag  'tran'                /*  IconTransformType */
  138. #define kControlBevelButtonTextAlignTag  'tali'                /*  ButtonTextAlignment */
  139. #define kControlBevelButtonTextOffsetTag  'toff'            /*  SInt16 */
  140. #define kControlBevelButtonGraphicAlignTag  'gali'            /*  ButtonGraphicAlignment */
  141. #define kControlBevelButtonGraphicOffsetTag  'goff'            /*  Point */
  142. #define kControlBevelButtonTextPlaceTag  'tplc'                /*  ButtonTextPlacement */
  143. #define kControlBevelButtonMenuValueTag  'mval'                /*  SInt16 */
  144. #define kControlBevelButtonMenuHandleTag  'mhnd'            /*  MenuHandle */
  145. #define kControlBevelButtonCenterPopupGlyphTag  'pglc'        /*  Boolean: true = center, false = bottom right */
  146.  
  147. #define kControlBevelButtonLastMenuTag     'lmnu'                /*  SInt16: menuID of last menu item selected from */
  148. #define kControlBevelButtonMenuDelayTag  'mdly'                /*  SInt32: ticks to delay before menu appears */
  149.  
  150.                                                             /*  Slider proc IDs  */
  151. #define kControlSliderProc                 48
  152. #define kControlSliderLiveFeedback         0x01
  153. #define kControlSliderHasTickMarks         0x02
  154. #define kControlSliderReverseDirection     0x04
  155. #define kControlSliderNonDirectional     0x08
  156.  
  157.                                                             /*  Triangle proc IDs  */
  158. #define kControlTriangleProc             64
  159. #define kControlTriangleLeftFacingProc     65
  160. #define kControlTriangleAutoToggleProc     66
  161. #define kControlTriangleLeftFacingAutoToggleProc  67
  162.  
  163.                                                             /*  Tagged data supported by disclosure triangles  */
  164. #define kControlTriangleLastValueTag     'last'                /*  SInt16 */
  165.                                                             /*  Progress Bar proc IDs  */
  166. #define kControlProgressBarProc         80
  167.                                                             /*  Tagged data supported by progress bars  */
  168. #define kControlProgressBarIndeterminateTag  'inde'            /*  Boolean */
  169.                                                             /*  Little Arrows proc IDs  */
  170. #define kControlLittleArrowsProc         96
  171.                                                             /*  Chasing Arrows proc IDs  */
  172. #define kControlChasingArrowsProc         112
  173.                                                             /*  Tabs proc IDs  */
  174. #define kControlTabLargeProc             128                    /*  Large tab size, north facing     */
  175. #define kControlTabSmallProc             129                    /*  Small tab size, north facing     */
  176. #define kControlTabLargeNorthProc         128                    /*  Large tab size, north facing     */
  177. #define kControlTabSmallNorthProc         129                    /*  Small tab size, north facing     */
  178. #define kControlTabLargeSouthProc         130                    /*  Large tab size, south facing     */
  179. #define kControlTabSmallSouthProc         131                    /*  Small tab size, south facing     */
  180. #define kControlTabLargeEastProc         132                    /*  Large tab size, east facing     */
  181. #define kControlTabSmallEastProc         133                    /*  Small tab size, east facing     */
  182. #define kControlTabLargeWestProc         134                    /*  Large tab size, west facing     */
  183. #define kControlTabSmallWestProc         135                    /*  Small tab size, west facing     */
  184.  
  185.                                                             /*  Tagged data supported by progress bars  */
  186. #define kControlTabContentRectTag         'rect'                /*  Rect */
  187. #define kControlTabEnabledFlagTag         'enab'                /*  Boolean */
  188. #define kControlTabFontStyleTag         'font'                /*  ControlFontStyleRec */
  189.  
  190. #define kControlTabInfoTag                 'tabi'                /*  ControlTabInfoRec */
  191. #define kControlTabInfoVersionZero         0
  192.                                                             /*  Visual separator proc IDs  */
  193. #define kControlSeparatorLineProc         144
  194.                                                             /*  Group Box proc IDs  */
  195. #define kControlGroupBoxTextTitleProc     160
  196. #define kControlGroupBoxCheckBoxProc     161
  197. #define kControlGroupBoxPopupButtonProc  162
  198. #define kControlGroupBoxSecondaryTextTitleProc  164
  199. #define kControlGroupBoxSecondaryCheckBoxProc  165
  200. #define kControlGroupBoxSecondaryPopupButtonProc  166
  201.  
  202.                                                             /*  Tagged data supported by group box  */
  203. #define kControlGroupBoxMenuHandleTag     'mhan'                /*  MenuHandle (popup title only) */
  204. #define kControlGroupBoxFontStyleTag     'font'                /*  ControlFontStyleRec */
  205.  
  206.                                                             /*  Image Well proc IDs  */
  207. #define kControlImageWellProc             176
  208.                                                             /*  Tagged data supported by image wells  */
  209. #define kControlImageWellContentTag     'cont'                /*  ButtonContentInfo */
  210. #define kControlImageWellTransformTag     'tran'                /*  IconTransformType */
  211.  
  212.                                                             /*  Popup Arrow proc IDs  */
  213. #define kControlPopupArrowEastProc         192
  214. #define kControlPopupArrowWestProc         193
  215. #define kControlPopupArrowNorthProc     194
  216. #define kControlPopupArrowSouthProc     195
  217. #define kControlPopupArrowSmallEastProc  196
  218. #define kControlPopupArrowSmallWestProc  197
  219. #define kControlPopupArrowSmallNorthProc  198
  220. #define kControlPopupArrowSmallSouthProc  199
  221.  
  222.                                                             /*  Placard proc IDs  */
  223. #define kControlPlacardProc             224
  224.                                                             /*  Clock proc IDs  */
  225. #define kControlClockTimeProc             240
  226. #define kControlClockTimeSecondsProc     241
  227. #define kControlClockDateProc             242
  228. #define kControlClockMonthYearProc         243
  229.  
  230. #define kControlClockNoFlags             0
  231. #define kControlClockIsDisplayOnly         1
  232. #define kControlClockIsLive             2
  233.  
  234.                                                             /*  Tagged data supported by clocks  */
  235. #define kControlClockLongDateTag         'date'                /*  LongDateRec */
  236. #define kControlClockFontStyleTag         'font'                /*  ControlFontStyleRec */
  237.  
  238.                                                             /*  User Pane proc IDs  */
  239. #define kControlUserPaneProc             256
  240. #define kControlUserItemDrawProcTag     'uidp'                /*  UserItemUPP */
  241. #define kControlUserPaneDrawProcTag     'draw'                /*  ControlUserPaneDrawingUPP */
  242. #define kControlUserPaneHitTestProcTag     'hitt'                /*  ControlUserPaneHitTestUPP */
  243. #define kControlUserPaneTrackingProcTag  'trak'                /*  ControlUserPaneTrackingUPP */
  244. #define kControlUserPaneIdleProcTag     'idle'                /*  ControlUserPaneIdleUPP */
  245. #define kControlUserPaneKeyDownProcTag     'keyd'                /*  ControlUserPaneKeyDownUPP */
  246. #define kControlUserPaneActivateProcTag  'acti'                /*  ControlUserPaneActivateUPP */
  247. #define kControlUserPaneFocusProcTag     'foci'                /*  ControlUserPaneFocusUPP */
  248. #define kControlUserPaneBackgroundProcTag  'back'            /*  ControlUserPaneBackgroundUPP */
  249.  
  250.                                                             /*  Edit Text proc IDs  */
  251. #define kControlEditTextProc             272
  252. #define kControlEditTextDialogProc         273
  253. #define kControlEditTextPasswordProc     274
  254. #define kControlEditTextDialogPasswordProc  275
  255.  
  256.                                                             /*  Tagged data supported by edit text  */
  257. #define kControlEditTextStyleTag         'font'                /*  ControlFontStyleRec */
  258. #define kControlEditTextTextTag         'text'                /*  Buffer of chars - you supply the buffer */
  259. #define kControlEditTextTEHandleTag     'than'                /*  The TEHandle of the text edit record */
  260. #define kControlEditTextKeyFilterTag     'fltr'
  261. #define kControlEditTextSelectionTag     'sele'                /*  EditTextSelectionRec */
  262. #define kControlEditTextPasswordTag     'pass'                /*  The clear text password text */
  263.  
  264. #define kControlStaticTextProc             288
  265. #define kControlStaticTextStyleTag         'font'                /*  ControlFontStyleRec */
  266. #define kControlStaticTextTextTag         'text'                /*  Copy of text */
  267. #define kControlStaticTextTextHeightTag  'thei'                /*  SInt16 */
  268.  
  269.                                                             /*  Picture control proc IDs  */
  270. #define kControlPictureProc             304
  271. #define kControlPictureNoTrackProc         305                    /*  immediately returns kControlPicturePart */
  272.  
  273. #define kControlIconProc                 320
  274. #define kControlIconNoTrackProc         321                    /*  immediately returns kControlIconPart */
  275. #define kControlIconSuiteProc             322
  276. #define kControlIconSuiteNoTrackProc     323                    /*  immediately returns kControlIconPart */
  277.  
  278. #define kControlIconTransformTag         'trfm'                /*  IconTransformType */
  279. #define kControlIconAlignmentTag         'algn'                /*  IconAlignmentType */
  280.  
  281.                                                             /*  Window Header proc IDs  */
  282. #define kControlWindowHeaderProc         336                    /*  normal header */
  283. #define kControlWindowListViewHeaderProc  337                /*  variant for list views - no bottom line */
  284.  
  285.                                                             /*  List Box proc IDs  */
  286. #define kControlListBoxProc             352
  287. #define kControlListBoxAutoSizeProc     353
  288.  
  289.                                                             /*  Tagged data supported by list box  */
  290. #define kControlListBoxListHandleTag     'lhan'                /*  ListHandle */
  291. #define kControlListBoxKeyFilterTag     'fltr'                /*  ControlKeyFilterUPP */
  292. #define kControlListBoxFontStyleTag     'font'                /*  ControlFontStyleRec */
  293.  
  294. #define kControlListBoxDoubleClickTag     'dblc'                /*  Boolean. Was last click a double-click? */
  295. #define kControlListBoxLDEFTag             'ldef'                /*  SInt16. ID of LDEF to use.  */
  296.  
  297.                                                             /*  Theme Push Button/Check Box/Radio Button proc IDs  */
  298. #define kControlPushButtonProc             368
  299. #define kControlCheckBoxProc             369
  300. #define kControlRadioButtonProc         370
  301. #define kControlPushButLeftIconProc     374                    /*  Standard pushbutton with left-side icon */
  302. #define kControlPushButRightIconProc     375                    /*  Standard pushbutton with right-side icon */
  303.  
  304.                                                             /*  Tagged data supported by standard buttons  */
  305. #define kControlPushButtonDefaultTag     'dflt'                /*  default ring flag */
  306.                                                             /*  Theme Scroll Bar proc IDs  */
  307. #define kControlScrollBarProc             384                    /*  normal scroll bar */
  308. #define kControlScrollBarLiveProc         386                    /*  live scrolling variant */
  309.  
  310.                                                             /*  Theme Popup Button proc IDs  */
  311. #define kControlPopupButtonProc         400
  312. #define kControlPopupFixedWidthVariant     0x01
  313. #define kControlPopupVariableWidthVariant  0x02
  314. #define kControlPopupUseAddResMenuVariant  0x04
  315. #define kControlPopupUseWFontVariant     0x08                /*  kControlUsesOwningWindowsFontVariant */
  316.  
  317. #define kControlPopupButtonMenuHandleTag  'mhan'            /*  MenuHandle */
  318. #define kControlPopupButtonMenuIDTag     'mnid'                /*  SInt16 */
  319.  
  320. #define kControlRadioGroupProc             416
  321. #define popupFixedWidth                 0x01
  322. #define popupVariableWidth                 0x02
  323. #define popupUseAddResMenu                 0x04
  324. #define popupUseWFont                     0x08
  325.  
  326. #define popupTitleBold                     0x0100
  327. #define popupTitleItalic                 0x0200
  328. #define popupTitleUnderline             0x0400
  329. #define popupTitleOutline                 0x0800
  330. #define popupTitleShadow                 0x1000
  331. #define popupTitleCondense                 0x2000
  332. #define popupTitleExtend                 0x4000
  333. #define popupTitleNoStyle                 0x8000
  334.  
  335. #define popupTitleLeftJust                 0x00000000
  336. #define popupTitleCenterJust             0x00000001
  337. #define popupTitleRightJust             0x000000FF
  338.  
  339.  
  340. /*--------------------------cctb • Control Color old Lookup Table----------------------*/
  341. #ifdef oldTemp
  342.     type 'cctb' {
  343.             unsigned hex longint;                                    /* CCSeed                */
  344.             integer;                                                /* ccReserved            */
  345.             integer = $$Countof(ColorSpec) - 1;                        /* ctSize                */
  346.             wide array ColorSpec {
  347.                     integer        cFrameColor,                        /* partcode                */
  348.                                 cBodyColor,
  349.                                 cTextColor,
  350.                                 cElevatorColor;
  351.                     unsigned integer;                                /* RGB:    red                */
  352.                     unsigned integer;                                /*        green            */
  353.                     unsigned integer;                                /*        blue            */
  354.             };
  355.     };
  356. #else
  357.     type 'cctb' {
  358.             unsigned hex longint = 0;                                /* CCSeed                */
  359.             integer = 0;                                            /* ccReserved            */
  360.             integer = $$Countof(ColorSpec) - 1;                        /* ctSize                */
  361.             wide array ColorSpec {
  362.                     integer        cFrameColor,                        /* partcode                */
  363.                                 cBodyColor,
  364.                                 cTextColor,
  365.                                 cElevatorColor,
  366.                                 cFillPatColor,
  367.                                 cArrowsLight,
  368.                                 cArrowsDark,
  369.                                 cThumbLight,
  370.                                 cThumbDark,
  371.                                 cHiliteLight,
  372.                                 cHiliteDark,
  373.                                 cTitleBarLight,
  374.                                 cTitleBarDark,
  375.                                 cTingeLight,
  376.                                 cTingeDark;
  377.                     unsigned integer;                                /* RGB:    red                */
  378.                     unsigned integer;                                /*        green            */
  379.                     unsigned integer;                                /*        blue            */
  380.             };
  381.     };
  382. #endif
  383.  
  384.  
  385. /*----------------------------CNTL • Control Template-----------------------------------*/
  386. type 'CNTL' {
  387.         rect;                                                    /* Bounds                */
  388.         integer;                                                /* Value                */
  389.         byte            invisible, visible;                     /* visible                */
  390.         fill byte;
  391.         integer;                                                /* Max                    */
  392.         integer;                                                /* Min                    */
  393.         integer         pushButProc,                            /* ProcID                */
  394.                         checkBoxProc,
  395.                         radioButProc,
  396.                         pushButProcUseWFont = 8,
  397.                         checkBoxProcUseWFont,
  398.                         radioButProcUseWFont,
  399.                         scrollBarProc = 16;
  400.         longint;                                                /* RefCon                */
  401.         pstring;                                                /* Title                */
  402. };
  403.  
  404. #define    popupMenuCDEFproc        1008                            /* ProcID 1008 = 16 * 63        */
  405.  
  406.  
  407. /*--------------------------ldes • List Box Description Template------------------------*/
  408. /*    Used in conjunction with the list box control.                                      */
  409.  
  410. type 'ldes'
  411. {
  412.     switch
  413.     {
  414.         case versionZero:
  415.             key integer = 0;    /* version */
  416.  
  417.             integer;                                                /* Rows                    */
  418.             integer;                                                /* Columns                */
  419.             integer;                                                 /* Cell Height            */
  420.             integer;                                                /* Cell Width            */
  421.             byte            noVertScroll, hasVertScroll;            /* Vert Scroll            */
  422.             fill byte;                                                /* Filler Byte            */
  423.             byte            noHorizScroll, hasHorizScroll;            /* Horiz Scroll            */
  424.             fill byte;                                                /* Filler Byte            */
  425.             integer;                                                /* LDEF Res ID            */
  426.             byte            noGrowSpace, hasGrowSpace;                /* HasGrow?                */
  427.             fill byte;
  428.     };
  429. };
  430.  
  431.  
  432. /*-------------------------------tab# • Tab Control Template-----------------------------*/
  433. type 'tab#'
  434. {
  435.     switch
  436.     {
  437.         case versionZero:
  438.             key integer = 0;    /* version */
  439.  
  440.             integer = $$Countof(TabInfo);
  441.             array TabInfo
  442.             {
  443.                 integer;                                            /* Icon Suite ID        */
  444.                 pstring;                                            /* Tab Name                */
  445.                 fill long;                                            /* Reserved                */
  446.                 fill word;                                            /* Reserved                */
  447.             };
  448.     };
  449. };
  450.  
  451.  
  452. #endif /* __CONTROLS_R__ */
  453.  
  454.